home *** CD-ROM | disk | FTP | other *** search
/ ASME's Mechanical Engine…ing Toolkit 1997 December / ASME's Mechanical Engineering Toolkit 1997 December.iso / c_lang / sc.zoo / xmalloc.c < prev   
Encoding:
C/C++ Source or Header  |  1988-06-03  |  640 b   |  44 lines

  1. /*
  2.  * A safer saner malloc, for careless programmers
  3.  */
  4.  
  5. #include <stdio.h>
  6. #include <curses.h>
  7.  
  8. extern char *malloc();
  9. #ifdef SYSV3
  10. extern void free();
  11. extern void exit();
  12. #endif
  13.  
  14. char *
  15. xmalloc(n)
  16. unsigned n;
  17. {
  18. register char *ptr;
  19.  
  20. if ((ptr = malloc(n + sizeof(int))) == NULL)
  21.     fatal("xmalloc: no memory");
  22. *((int *) ptr) = 12345;        /* magic number */
  23. return(ptr + sizeof(int));
  24. }
  25.  
  26. xfree(p)
  27. char *p;
  28. {
  29. if (p == NULL)
  30.     fatal("xfree: NULL");
  31. p -= sizeof(int);
  32. if (*((int *) p) != 12345)
  33.     fatal("xfree: storage not malloc'ed");
  34. free(p);
  35. }
  36.  
  37. fatal(str)
  38. char *str;
  39. {
  40.     deraw();
  41.     (void) fprintf(stderr,"%s\n", str);
  42.     exit(1);
  43. }
  44.